home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
graphics
/
blit.arc
/
blitter.man
Wrap
Text File
|
1988-05-20
|
47KB
|
1,253 lines
****
****
****
******
** ** **
** ** **
** ** **
User Manual for the Atari ST
Bit-Block Transfer Processor (BLiTTER)
The Atari Corporation
Sunnyvale, California
15 June 1987
TABLE OF CONTENTS
Introduction ...................................... 1
Bit-Block Transfers .......................... 2
Bit-Block Transfer ........................... 3
Functional Description ............................ 3
Programming Model ................................. 5
Register Map ................................. 5
Bit-Block Addresses .......................... 5
Source X Increment ...................... 6
Source Y Increment ...................... 6
Destination Address ..................... 6
Destination X Increment ................. 6
Destination Y Increment ................. 6
X Count ................................. 7
Y Count ................................. 7
Bit-Block Alignments ......................... 7
Endmask 1, 2, 3 ......................... 7
Skew .................................... 7
FXSR .................................... 7
NSFR .................................... 8
Logic Operations ............................. 8
Logic Operations ........................ 8
Halftone Operations .......................... 8
Halftone RAM ............................ 8
Line Number ............................. 8
Smudge .................................. 9
Halftone Operations ..................... 9
Bus Accesses ................................. 9
Hog ..................................... 9
Busy .................................... 9
Appendix A -- Programming Example ................. 10
Appendix B -- References .......................... 17
THE SCOPE OF THIS DOCUMENT is limited to a functional description of the
Atari ST BLiTTER. This document is not a data sheet for system inte-
gration, rather it is a user manual for system programming. For more
information, please refer to the texts listed at the end of this document.
*** INTRODUCTION
The Atari ST Bit-Block Transfer Processor (BLiTTER) is a hardware imple-
mentation of the bit-block transfer (BitBlt) algorithm. BitBlt can be
simply described as a procedure that moves bit-aligned data from a source
location to a destination location through a given logic operation. The
BitBlt primitive can be used to perform such operations as:
o Area seed filling
o Rotation by recursive subdivision
o Slice and smear magnification
o Brush line drawing using Bresenham DDA
o Text transformations (eg. bold, italic, outline)
o Text scrolling
o Window updating
o Pattern filling
And general memory-to-memory block copying [1].
The heart of BitBlt was first formally defined by Newman and Sproull in
their description of the function RasterOp [2]. As defined, RasterOp
performed its block transfers on a bit-by-bit basis and was limited to a
small subset of possible source and destination Boolean combinations.
Enhancements to RasterOp such as processing bits in parallel or intro-
ducing a halftone pattern into the transfer were literally left as
exercises for the reader.
In an effort to improve the functionality and performance of the original
algorithm, the prescribed enhancements were incorporated into the
definition of RasterOp and implemented in hardware as the RasterOp Chip
[3]. However the RasterOp Chip lacked the two-dimensionality of the
original function and suffered from a performance bottleneck caused by the
loading and reloading of source, destination, and halftone data (ie. it
could not DMA).
While efforts were being made to improve the performance of RasterOp, the
formal definition of RasterOp was further refined and became the basis of
the BitBlt copyLoop primitive in the Smalltalk-80 graphics kernel [4].
Because of its comprehensive interface definition, the BitBlt primitive
was inefficient and required special-case optimizations that violated its
general-purpose nature. Clearly a hardware solution was necessary to
increase the performance of the BitBlt copyLoop without sacrificing its
functionality.
The Atari ST BLiTTER is a hardware solution to the performance problems of
BitBlt. The BLiTTER is a DMA device that implements the full BitBlt
copyLoop definition with the addition of a few minor extensions. Single
word or multi-word increments and decrements are provided for transfers to
destinations in Atari ST video display memory. A center mask, which would
otherwise be a constant all ones, is also provided for an additional
Atari BLiTTER doc - page 1
level of texture. The remainder of this document is directly based on the
original functional description of the Atari ST BLiTTER.
*** BIT-BLOCK TRANSFERS
As previously stated, a bit-block transfer can be described as a procedure
that moves bit-aligned data from a source location to a destination
location through a given logic operation. There are sixteen logic
combination rules associated with the merging of source and destination
data. Note that this set contains all possible combinations between
source and destination. The following table contains the valid BitBlt
combination rules:
LOGIC OPERATIONS
(~s&~d)|(~s&d)|(s&~d)|(s&d)
_______________________________________
| | |
MSB LSB | OP | COMBINATION RULE |
| | |
0 0 0 0 | 0 | all zeros |
0 0 0 1 | 1 | source AND destination |
0 0 1 0 | 2 | source AND NOT destination |
0 0 1 1 | 3 | source |
0 1 0 0 | 4 | NOT source AND destination |
0 1 0 1 | 5 | destination |
0 1 1 0 | 6 | source XOR destination |
0 1 1 1 | 7 | source OR destination |
1 0 0 0 | 8 | NOT source AND NOT destination |
1 0 0 1 | 9 | NOT source XOR destination |
1 0 1 0 | A | NOT destination |
1 0 1 1 | B | source OR NOT destination |
1 1 0 0 | C | NOT source |
1 1 0 1 | D | NOT source OR destination |
1 1 1 0 | E | NOT source OR NOT destination |
1 1 1 1 | F | all ones |
|____|__________________________________|
Adjustments to block extents and several other transfer parameters a